package com.ht.api.call.func.impl.ad;

import java.util.ArrayList;
import java.util.List;

import com.ht.api.bean.AjaxResult;
import com.ht.api.bean.LoginBean;
import com.ht.api.business.ad.PlanHelper;
import com.ht.api.call.func.IFunctionCall;
import com.ht.api.db.Db;
import com.ht.api.db.Entity;

import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * 手动创建广告计划
 * @author asq
 * @createTime 2025年3月1日 14:01:20
 */
@Slf4j
public class CreatePlanByPersonFunctionCall implements IFunctionCall {

	@Override
	public String getName() {
		return "手动创建广告计划";
	}

	@Override
	public JSONObject execute(LoginBean me, JSONObject param, AjaxResult result) {
		// 创建营销策略，策略广告，广告计划
		// 获取param参数
		List<Entity> dataList = new ArrayList<>();
        Entity adCampaign = PlanHelper.generateCampaign(param);
        dataList.add(adCampaign);
        Entity adCampaignItem = PlanHelper.createCampaignItem(param);
        dataList.add(adCampaignItem);

		if (param.getStr("cycle_type").equals("IMMEDIATELY")) { // 如果是立即执行，则将计划时间设置为当前时间
			param.set("fix_time", DateUtil.now());
		}

        Entity adPlan = PlanHelper.generatePlan(param);
        dataList.add(adPlan);
        
        // 保存
		Db.insertBatchWithStream(me.getStreamLoadConfig(), dataList);

		return JSONUtil.createObj();
	}

}
